In order to increase performance for graphics processing units (GPUs), memory bandwidth reduction techniques are employed. One such way to decrease the bandwidth requirements is to perform what is called buffer compression. A graphics system typically uses two buffers: a color buffer where the colors of the pixels are drawn and a depth buffer where the depth of each pixel is stored. During rendering these buffers are read and written to and often the same pixel is accessed several times for both buffers. These read and write accesses are expensive in terms of energy and should therefore be kept to a minimum, in particular for user terminals with limited power supply, such as mobile devices.
Buffer compression implies that blocks of buffer data is stored in memory in compressed form. Since the decompression and compression might happen several times for a particular pixel and block, it is important that the compression is lossless, i.e. non-destructive.
Documents [1] and [2] give good overviews of prior art buffer compression and depth buffer compression, respectively.
Color buffer data leads to an important problem as compared to depth buffer data as it may involve sharp edges between the drawn triangle and the background. Traditional color buffer data techniques may run into problems when having a prediction-based color buffer compression by predicting over the edge of such discontinuities.